package cn.holy.app.xcddt.app

import android.app.Application
import android.content.Context
import androidx.sqlite.db.SupportSQLiteDatabase
import androidx.room.Room
import androidx.room.migration.Migration
import android.content.SharedPreferences
import androidx.multidex.MultiDexApplication
import androidx.core.content.edit
import cn.holy.app.xcddt.BuildConfig
import cn.holy.app.xcddt.R
import cn.holy.app.xcddt.app.module.AppComponent
import cn.holy.app.xcddt.app.module.DaggerAppComponent
import cn.holy.app.xcddt.database.AppDataBase
import cn.holy.app.xcddt.database.dao.UserDao
import cn.holy.app.xcddt.domain.UserBean
import com.alibaba.android.arouter.launcher.ARouter
import com.google.gson.Gson
import com.orhanobut.logger.AndroidLogAdapter
import com.orhanobut.logger.Logger
import com.scwang.smart.refresh.layout.SmartRefreshLayout
import com.scwang.smart.refresh.layout.api.RefreshLayout
import com.tencent.bugly.Bugly
import com.tencent.bugly.crashreport.biz.UserInfoBean
import com.yanzhenjie.album.AlbumConfig
import com.yanzhenjie.album.Album
import java.util.*


/**
 * Created by 69568 on 2018/2/26.
 */
class App : MultiDexApplication() {






    override fun onCreate() {
        super.onCreate()

        if (BuildConfig.DEBUG) {           // 这两行必须写在init之前，否则这些配置在init过程中将无效
            ARouter.openLog()     // 打印日志
            ARouter.openDebug()   // 开启调试模式(如果在InstantRun模式下运行，必须开启调试模式！线上版本需要关闭,否则有安全风险)
        }
        ARouter.init(this) // 尽可能早，推荐在Application中初始化

        appDataBase = Room.databaseBuilder(this,
                AppDataBase::class.java, "sztxc-database").allowMainThreadQueries().addMigrations().build()
        sharedPreferences = this.getSharedPreferences("app_xcddt", android.content.Context.MODE_PRIVATE)
        Logger.addLogAdapter(AndroidLogAdapter())
        appComponent = DaggerAppComponent.create()
        inst = this
        Album.initialize(
                AlbumConfig.newBuilder(this)
                        .setAlbumLoader(GlideAlbumLoader()) // 设置Album加载器。
                        .setLocale(Locale.CHINA) // 比如强制设置在任何语言下都用中文显示。
                        .build()
        )
        Bugly.init(applicationContext, "b5cf6a414b", true);

//        static {
//            //设置全局的Header构建器
//            SmartRefreshLayout.setDefaultRefreshHeaderCreator(new DefaultRefreshHeaderCreator() {
//                @Override
//                public RefreshHeader createRefreshHeader(Context context, RefreshLayout layout) {
//                    layout.setPrimaryColorsId(R.color.colorPrimary, android.R.color.white);//全局设置主题颜色
//                    return new ClassicsHeader(context);//.setTimeFormat(new DynamicTimeFormat("更新于 %s"));//指定为经典Header，默认是 贝塞尔雷达Header
//                }
//            });
//            //设置全局的Footer构建器
//            SmartRefreshLayout.setDefaultRefreshFooterCreator(new DefaultRefreshFooterCreator() {
//                @Override
//                public RefreshFooter createRefreshFooter(Context context, RefreshLayout layout) {
//                    //指定为经典Footer，默认是 BallPulseFooter
//                    return new ClassicsFooter(context).setDrawableSize(20);
//                }
//            });
//        }
    }


    companion object {


       var MIGRATION_3_4:Migration = object : Migration(3,4) {
           override fun migrate(database: SupportSQLiteDatabase) {
               database.execSQL("ALTER Table records ADD COLUMN id INTEGER")
           }

       }



        lateinit var inst: App
            private set

        var userInfo: UserBean?
            set(value) = sharedPreferences.edit { putString("userInfo", Gson().toJson(value)) }
            get() = Gson().fromJson(sharedPreferences.getString("userInfo", ""), UserBean::class.java)

        lateinit var appDataBase: AppDataBase
            private set

        lateinit var appComponent: AppComponent
            private set

        lateinit var sharedPreferences: SharedPreferences
            private set
    }


}